package com.ccsu.eb.service;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ccsu.eb.mapper.EbProductCategoryMapper;
import com.ccsu.eb.mapper.EbProductMapper;
import com.ccsu.eb.model.EbProduct;
import com.ccsu.eb.model.EbProductCategory;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 用一句话描述
 * @Auther: 新梦想*陈超
 * @Date: 2022/3/18 08:28
 */
@Service
public class EbProductService {

    @Resource
    private EbProductMapper ebProductMapper;

    @Resource
    private EbProductCategoryMapper ebProductCategoryMapper;

    /**
     *根据商品 id查询商品的详情 信息
     * @param pid  商品id
     * @return
     */
    public EbProduct detail(Integer pid){
        EbProduct ebProduct = ebProductMapper.selectById(pid);

        return ebProduct;
    }

    /**
     *根据商品id查询该商品的一级和二级分类信息
     * @param pid   商品id
     * @return
     */
    public Map<String, EbProductCategory> linkedCateByProduc(Integer pid){
        Map<String, EbProductCategory> result  = new HashMap<>(2);
        //1.获取商品信息
        EbProduct ebProduct = ebProductMapper.selectById(pid);
        //2.获取对应商品的大类信息
        EbProductCategory bigCate = ebProductCategoryMapper.selectById(ebProduct.getEpcId());
        //3.获取对象商品的小类信息
        EbProductCategory smallCate = ebProductCategoryMapper.selectById(ebProduct.getEpcChildId());
        //4.将大类 和小数据数据保存到 result中
        result.put("big",bigCate);
        result.put("small",smallCate);
        return  result;

    }

    /**
     * 根据关键字搜索商品列表
     * @param keyword   关键字
     * @param pnum      页数
     * @return
     */
    public Page search(String keyword, Integer pnum) {
        Page page = new Page(pnum,16);
        Page productPage = ebProductMapper.selectPage(page, Wrappers.<EbProduct>lambdaQuery()
                .like(EbProduct::getEpDescription, keyword));
        if(productPage==null){
            //TODO 查询不到商品
        }
        return productPage;
    }
}
